﻿using System;
using System.Collections.Generic;
using System.Text;
using Manager.App_Code.IDAL;
using Manager.App_Code.DTO;
using System.Data;

namespace Manager.App_Code.DAL
{
    class DichVuDAL:StandardConnectDB,IDichVu
    {
        public List<DTO.DichVuDTO> GetlistDichVu()
        {
            List<DichVuDTO> listDV = new List<DichVuDTO>();
            DataTable dt = DTExecuteSelect("Select * from DichVu");
            foreach (DataRow dr in dt.Rows)
            {
                listDV.Add(ConvertObjectDataRowToDichVuDTO(dr));
            }
            return listDV;
            
        }




        public List<DichVuDTO> GetlistDichVuByMaNhom(string MaNhomDV)
        {
            List<DichVuDTO> listDV = new List<DichVuDTO>();
            Dictionary<string, object> paramlist = new Dictionary<string, object>();
            paramlist.Add("@MaNhomDV", MaNhomDV);
            DataTable dt = DTExecuteSelect("SP_DichVu_GetByNhomDichVu", paramlist);
            foreach (DataRow dr in dt.Rows)
            {
                listDV.Add(ConvertObjectDataRowToDichVuDTO(dr));
            }
            return listDV;
        }



        public DTO.DichVuDTO GetDichVuByID(string MaDV)
        {
            DichVuDTO dichvu = new DichVuDTO();
            Dictionary<string, object> paramlist = new Dictionary<string, object>();
            paramlist.Add("@MaDV", MaDV);
            DataTable dt = DTExecuteSelect("SP_DichVu_GetByID", paramlist);
            dichvu = ConvertObjectDataRowToDichVuDTO(dt.Rows[0]);
            return dichvu;
            
        }

        public bool InsertDichVu(DTO.DichVuDTO dichvu)
        {
            Dictionary<string, object> paramlist = new Dictionary<string, object>();
            paramlist.Add("@MaDV", dichvu.MaDV);
            paramlist.Add("@TenDichVu", dichvu.TenDichVu);
            paramlist.Add("@DVTienTe", dichvu.DVTienTe);
            paramlist.Add("@GiaDV", dichvu.GiaDV);
            paramlist.Add("@GhiChu", dichvu.GhiChu);
            paramlist.Add("@NhomDichVu", dichvu.NhomDichVu);
            return ExecuteUpdate("SP_DichVu_Insert", paramlist);
            
        }

        public bool DeleteDichVu(DTO.DichVuDTO dichvu)
        {
            Dictionary<string, object> paramlist = new Dictionary<string, object>();
            paramlist.Add("@MaDV", dichvu.MaDV);
            return ExecuteUpdate("SP_DichVu_Delete", paramlist);
            
        }

        public bool UpdateDichVu(DTO.DichVuDTO dichvu)
        {
            Dictionary<string, object> paramlist = new Dictionary<string, object>();
            paramlist.Add("@MaDV", dichvu.MaDV);
            paramlist.Add("@TenDichVu", dichvu.TenDichVu);
            paramlist.Add("@DVTienTe", dichvu.DVTienTe);
            paramlist.Add("@GiaDV", dichvu.GiaDV);
            paramlist.Add("@GhiChu", dichvu.GhiChu);
            paramlist.Add("@NhomDichVu", dichvu.NhomDichVu);
            return ExecuteUpdate("SP_DichVu_Update", paramlist);
            
        }

        public DTO.DichVuDTO ConvertObjectDataRowToDichVuDTO(System.Data.DataRow dr)
        {
            if (dr != null)
            {
                DichVuDTO dichvu = new DichVuDTO();
                dichvu.MaDV = dr["MaDV"].ToString();
                dichvu.TenDichVu = dr["TenDichVu"].ToString();
                ITienTe iTienTe = new TienTeDAL();
                if (dr["DVTienTe"].ToString() != "")
                    dichvu.DVTienTe = iTienTe.GetTienTeByID(dr["DVTienTe"].ToString());
                dichvu.GhiChu = dr["GhiChu"].ToString();
                dichvu.GiaDV = float.Parse(dr["GiaDV"].ToString());
                INhomDichVu iNhomDichVu = new NhomDichVuDAL();
                if(dr["NhomDichVu"].ToString()!="")
                    dichvu.NhomDichVu =iNhomDichVu.GetNhomDichVuByID(dr["NhomDichVu"].ToString());

                return dichvu;
            }
            else
                return null;
            
        }


      

    }
}
